前言
这里是一些个人总结。
最短路径
寻找最短路径
[dist,path,pred] = graphshortestpath(D, i, j)
dist
:最短距离
path
:最短距离经过的路径节点
pred
:从i
到每个节点的最短路径中,目标节点的先驱,即目标节点的前面一个节点
D
:稀疏矩阵(通过D = sparse(A)
将普通矩阵A
转化为稀疏矩阵D
)
i
:起点
j
:终点
绘制最短路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| h = view(biograph(D, [], 'showArrows', 'on', 'ShowWeights', 'on')) a=zeros(7); a(1,2)=4;a(1,3)=2; a(2,3)=3;a(2,4)=2;a(2,5)=6; a(3,4)=5;a(3,6)=4; a(4,5)=2;a(4,6)=7; a(5,6)=4;a(5,7)=8; a(6,7)=3;
b=sparse(a);
h=view(biograph(b,[],'showArrows','on','ShowWeights','on')); [dist,path,pred] = graphshortestpath(b,1,7);
set(h.Nodes(path),'Color',[1 0.4 0.4]) edges = getedgesbynodeid(h,get(h.Nodes(path),'ID')); set(edges,'LineColor',[1 0 0]) set(edges,'LineWidth',1.5)
|
数组中各元素位次
1 2 3
| X = [1 5 9 3 2 6; 4 9 3 0 2 1; 8 3 2 1 4 2] [~,G]=sort(-X); [~,G]=sort(I);
|
(G(i,j)
表示X(i,j)
在第j
列中从大到小排的位次)